#include <iostream>
#include "LinkedList.h"

using std::cout;
using std::endl;


int main(int argc, char * argv[])
{
    //ListNode * pNode1 = CreateListNode(1);
    //ListNode * pNode2 = CreateListNode(3);
    //ListNode * pNode3 = CreateListNode(5);
    //ConnectListNodes(pNode1, pNode2);
    //ConnectListNodes(pNode2, pNode3);
    // declare a LinkedList and head
    ListNode * pHead = CreateListNode(0);
    // for (int i = 1; i < 10; ++i)
    //     AddToTail(&pHead, i);

    // AddToTail(&pHead, 7);
    // print pHead
    // PrintList(pHead);
    // PrintListReversingly_Iteratively(pHead);
    // for (int i = 0; i < 10; i += 2)
    //     RemoveNode(&pHead, i);
    // ListNode * pHead = CreateListNode(0);
    // for (int i = 0; i < 10; ++i)
    // AddToTail(pHead, 0);
    
    // print pHead
    // PrintList(pHead);
    // PrintListReversingly_Recurisively(pHead);

    // DeleteNode
    ListNode * pNode1 = CreateListNode(3);
    ListNode * pNode2 = CreateListNode(4);
    ConnectListNodes(pHead, pNode1);
    ConnectListNodes(pNode1, pNode2);
    PrintList(pHead);
    // DeleteNode(&pHead, pNode2);
    PrintList(pHead);
 
        
    ListNode * pReverseHead = ReverseList_Iteratively(pHead);
    PrintList(pReverseHead);
    pReverseHead = ReverseList_Recursively(pReverseHead);
    PrintList(pReverseHead);
    DestoryList(pHead);
}
